home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
orf.zip
/
ORF.BAS
next >
Wrap
BASIC Source File
|
1980-01-04
|
21KB
|
606 lines
'=========================================================================
' Copyright 1987, Frederick G. Volking
' San Francisco, California
' Author may be contacted through Chrisma BBS at (415)349-6576
' This software released as "freeware" by the Author on July 1, 1987.
'=========================================================================
' This code extracted from Omni-Tool-Box: Version: 1.1
'=========================================================================
COPYright$="OmniReference - Copyright 1987, Frederick Volking - Ver: 1.10.A"
INSTALLdefault$="GNIKLOVBASORFORBBAK 1 0 1 0 "
YES%=1
NO%=0
PRINT
PRINT COPYright$
DECRoff%=7
INCRoff%=5
DIM VAR$(500),VARloc$(500),SRTINDX%(500),VARtype%(500),_
DECRoff$(DECRoff%),DECRoffLEN%(DECRoff%),_
INCRoff$(INCRoff%),INCRoffLEN%(INCRoff%),_
INCLDfile$(99),INCLDfileGOOD%(99)
GOSUB PARSEinstallDEFAULTS
GOSUB PARSEcommandLINE
GOSUB SETupVARS
GOSUB OPENsourceFILE
PRINT SOURCEfile$;
GOSUB OPENtargetFILE
INCLDprocess$=""
GOSUB PROCESSfile
CLOSE #1
GOSUB PROCESSincldFILES
GOSUB SORTarray
GOSUB OPENorfFILE
GOSUB SHOWvars
IF AUTOelim%=YES% AND DOpretty%=YES% THEN GOSUB SWITCHem
PRINT
PRINT "DONE!"
END
'=========================================================================
PROCESSincldFILES:
IF INCLDfile%>0 THEN
WHILE (INCLDfile%-INCcounter%)<>0
INCR INCcounter%
OPEN "R", #1, INCLDfile$(INCcounter%),1
LOFincldFILE%=LOF(1)
CLOSE #1
IF LOFincldFILE%=0 THEN
PRINT "not found[";INCLDfile$(INCcounter%);"]";
KILL INCLDfile$(INCcounter%)
INCLDfileGOOD%(INCcounter%)=NO%
ELSE
INCLDfileGOOD%(INCcounter%)=YES%
PRINT INCLDfile$(INCcounter%);
OPEN "I", #1, INCLDfile$(INCcounter%)
INCLDprocess$=STR$(INCcounter%)
INCLDprocess$="["+RIGHT$(INCLDprocess$,LEN(INCLDprocess$)-1)+"]"
PRETTY%=0
GOSUB PROCESSfile
CLOSE #1
END IF
WEND
END IF
RETURN
'=========================================================================
PROCESSfile:
WHILE NOT EOF(1)
LINE INPUT #1, IN$
IF INSTR(IN$,"'"+"ORF=")>0 THEN
IN$=LEFT$(IN$,INSTR(IN$,"'"+"ORF=")-1)
GOSUB REMOVEextraRIGHTchars
END IF
OOUT$=IN$
IN$=UCASE$(IN$)
INCR PRETTY%
PRINT ".";
GOSUB REMOVEquotedSTRINGS
IF INSTR(IN$,"$INCLUDE")>0 THEN GOSUB FOUNDincld
PUNC$=PUNC1$
GOSUB REMOVEpunc
GOSUB REMOVEremarks
GOSUB REMOVEextraSPACES
HOLDin$=IN$
IF INCLDprocess$="" THEN
IF DOpretty%=YES% THEN
OOUTprocessed$=HOLDin$
GOSUB PRETTYout
END IF
END IF
IN$=HOLDin$
GOSUB PROCESSremaining
WEND
RETURN
'=========================================================================
FOUNDincld:
INC$=UCASE$(OOUT$)
C%=INSTR(INC$,"$INCLUDE")+8
LEFTC%=INSTR(C%,INC$,CHR$(34))+1
RGHTC%=INSTR(LEFTC%,INC$,CHR$(34))
INCR INCLDfile%
INCLDfileT$=MID$(INC$,LEFTC%,RGHTC%-LEFTC%)
IF INSTR(INCLDfileT$,".")=0 THEN INCLDfileT$=INCLDfileT$+".BAS"
INCLDfile$(INCLDfile%)=INCLDfileT$
RETURN
'=========================================================================
PRETTYout:
IF OOUT$>" " THEN
WHILE LEFT$(OOUT$,1)=" " OR LEFT$(OOUT$,1)=CHR$(9)
OOUT$=RIGHT$(OOUT$,LEN(OOUT$)-1)
WEND
END IF
IF INSTR(IN$+" :",":")<INSTR(IN$," ") THEN FUNCoff%=1 ELSE FUNCoff%=0
PUNC$=":"
GOSUB REMOVEpunc
GOSUB REMOVEextraSPACES
IN$=OOUTprocessed$
IF IN$>"" THEN
GOSUB SUBchars
FOR C%=1 TO DECRoff%
IF INSTR(IN$,DECRoff$(C%))>0 THEN
DECR OFFset%
MID$(IN$,INSTR(IN$,DECRoff$(C%)),DECRoffLEN%(C%)+2)= _
CHR$(0)+SPACE$(DECRoffLEN%(C%))+CHR$(0)
END IF
NEXT
IF OFFset%<0 THEN OFFset%=0
OOUT$=SPACE$((OFFset%+TEMPoff%)*3)+OOUT$
END IF
IF RIGHT$(OOUT$,1)<>"_" THEN
TEMPoff%=0
ELSE
TEMPoff%=1
END IF
IF DOorfs%=YES% THEN
IF LEN(OOUT$)<70 THEN OOUT$=LEFT$(OOUT$+SPACE$(70),70)
OOUT$=OOUT$+"'"+"ORF="+STR$(PRETTY%)
END IF
PRINT #2, OOUT$
IF IN$>"" THEN
IF FUNCoff%=1 THEN
OFFset%=1
ELSE
FOR C%=1 TO INCRoff%
IF INSTR(IN$,INCRoff$(C%))>0 THEN
INCR OFFset%
MID$(IN$,INSTR(IN$,INCRoff$(C%)),INCRoffLEN%(C%)+2)= _
CHR$(0)+SPACE$(INCRoffLEN%(C%))+CHR$(0)
END IF
NEXT
GOSUB REMOVEextraRIGHTchars
IF RIGHT$(IN$,4)="THEN" THEN INCR OFFset%
END IF
END IF
RETURN
'=========================================================================
REMOVEextraRIGHTchars:
WHILE (RIGHT$(IN$,1))<"!" AND LEN(IN$)>1
IN$=LEFT$(IN$,LEN(IN$)-1)
WEND
RETURN
'=========================================================================
SUBchars:
IN$=CHR$(0)+IN$+CHR$(0)
WHILE INSTR(IN$," ")>0
MID$(IN$,INSTR(IN$," "),1)=CHR$(0)
WEND
RETURN
'=========================================================================
SHOWvars:
FOR C%=1 TO TOPvar%
IF LEN(VAR$(C%))>LONGESTvar% THEN LONGESTvar%=LEN(VAR$(C%))
NEXT
SHOWlen%=78-(LONGESTvar%+8)
PRINT #3, " ";COPYright$
PRINT #3, STRING$(78,"=")
PRINT #3, "Source file> ";SOURCEfile$;TAB(50);"Size>";SOURCEfileLEN&
PRINT #3, STRING$(78,"-")
PRINT #3, TAB(2);"Type";
PRINT #3, TAB(7);"Name";
PRINT #3, TAB(LONGESTvar%+8);"References"
PRINT #3, " "
FOR C%=1 TO TOPvar%
PRINT #3, TAB(2);
SELECT CASE VARtype%(SRTINDX%(C%))
CASE =0
PRINT #3, "Var";
CASE =1
PRINT #3, "LBL";
CASE =2
PRINT #3, "Fn";
END SELECT
PRINT #3, TAB(7);LEFT$(VAR$(SRTINDX%(C%))+" "+ _
STRING$(LONGESTvar%,"."),(LONGESTvar%));
WHILE LEN(VARloc$(SRTINDX%(C%)))>SHOWlen%
CYCLE%=SHOWlen%
GOSUB REMOVEleadSPACE
WHILE MID$(VARloc$(SRTINDX%(C%)),CYCLE%,1)<>" "
DECR CYCLE%
WEND
PRINT #3, TAB(LONGESTvar%+9);LEFT$(VARloc$(SRTINDX%(C%)),CYCLE%)
VARloc$(SRTINDX%(C%))=RIGHT$(VARloc$(SRTINDX%(C%)), _
LEN(VARloc$(SRTINDX%(C%)))-CYCLE%)
WEND
GOSUB REMOVEleadSPACE
PRINT #3, TAB(LONGESTvar%+9);VARloc$(SRTINDX%(C%))
NEXT
PRINT #3, STRING$(78,"-")
PRINT #3, "$INCLUDE Files Found & Processed:";
FOR C%=1 TO INCLDfile%
IF INCLDfileGOOD%(C%)=YES% THEN
PRINT #3, TAB(37);"[";
PRINT #3, USING "##"; C%;
PRINT #3, " ] ";INCLDfile$(C%)
END IF
NEXT
PRINT #3, " "
PRINT #3, "$INCLUDE Files NOT FOUND!:";
FOR C%=1 TO INCLDfile%
IF INCLDfileGOOD%(C%)=NO% THEN
PRINT #3, TAB(37);INCLDfile$(C%)
END IF
NEXT
PRINT #3, " "
PRINT #3, STRING$(79,"-")
PRINT #3, "DONE..."
RETURN
'=========================================================================
REMOVEleadSPACE:
WHILE LEFT$(VARloc$(SRTINDX%(C%)),1)=" "
VARloc$(SRTINDX%(C%))=RIGHT$(VARloc$(SRTINDX%(C%)), _
LEN(VARloc$(SRTINDX%(C%)))-1)
WEND
RETURN
'=========================================================================
PROCESSremaining:
IF INSTR(IN$+" :",":")<INSTR(IN$," ") THEN GOTaFUNC%=1 ELSE GOTaFUNC%=0
PUNC$=":"
GOSUB REMOVEpunc
GOSUB REMOVEextraSPACES
WHILE IN$>" "
C%=INSTR(IN$," ")
PARSEword$=LEFT$(IN$,C%-1)
IN$=RIGHT$(IN$,LEN(IN$)-C%)
PARSEword%=ASC(LEFT$(PARSEword$,1))
IF INSTR(EXTRACT$,CHR$(0)+PARSEword$+CHR$(0))=0 _
AND PARSEword%>64 AND PARSEword%<91 THEN
PARSEword$=PARSEword$+INCLDprocess$
NEWvar%=1
FOR C%=1 TO TOPvar%
IF PARSEword$=VAR$(C%) THEN
VARloc$(C%)=VARloc$(C%)+STR$(PRETTY%)
IF GOTaFUNC%=1 THEN VARtype%(C%)=1
C%=TOPVAR%
NEWvar%=0